/**
 * 处理文件拖拽放下事件的函数。
 * 当文件被拖拽到聊天历史面板并放下时，执行此函数。
 *
 * @param {Event} event - 拖拽放下事件对象
 */
function chatHistoryPanelDragAfterEvent(event) {
	// 阻止事件的默认行为，防止浏览器对文件进行默认处理
	event.preventDefault();
	// 移除聊天历史面板上的所有附加样式，恢复初始状态
	chatHistoryPanel.removeAttribute('style');
	// 隐藏文件导入覆盖层
	displayImportOverlay(chatHistoryPanel, false);
	/**
	 * 获取通过拖拽传递的文件列表
	 */
	const files = event.dataTransfer.files;
	// 若文件列表为空，显示错误提示信息并终止函数执行
	if (!files.length) {
		showSystemMessage('请拖入有效的文本文件', 'error');
		return;
	}
	/**
	 * 获取文件列表中的第一个文件
	 */
	const file = files[0];
	// 调用文件处理函数处理选中的文件
	handleFile(file);
};

/**
 * 处理文件拖拽相关事件的函数，包括拖拽经过和拖拽离开事件。
 *
 * @param {Event} event - 拖拽事件对象
 */
function chatHistoryPanelDragEvent(event) {
	// 阻止事件的默认行为，防止浏览器对文件进行默认处理
	event.preventDefault();
	// 若事件类型为拖拽经过
	if (event.type === 'dragover') {
		// 若当前没有文件正在被拖拽
		if (!isFileDragging) {
			// 标记有文件正在被拖拽
			isFileDragging = true;
			// 为聊天历史面板添加边框脉冲动画
			chatHistoryPanel.style.animation = 'border-pulse 4.0s infinite';
			// 为聊天历史面板添加模糊滤镜效果
			//chatHistoryPanel.style.filter = 'blur(1px)';
			// 显示文件导入覆盖层
			displayImportOverlay(chatHistoryPanel, true);
		}
	}
	// 若事件类型为拖拽离开
	else if (event.type === 'dragleave') {
		/**
		 * 获取与当前事件相关的目标元素
		 */
		const relatedTarget = event.relatedTarget;
		// 若相关目标元素不在聊天历史面板内
		if (!chatHistoryPanel.contains(relatedTarget)) {
			// 标记没有文件正在被拖拽
			isFileDragging = false;
			// 移除聊天历史面板上的所有样式，恢复初始状态
			chatHistoryPanel.removeAttribute('style');
			// 隐藏文件导入覆盖层
			displayImportOverlay(chatHistoryPanel, false);
		}
	}
};